package com.ocm.tourism.core.service;

import java.util.List;

import com.ocm.tourism.core.domain.Advertisement;
import com.ocm.tourism.core.domain.Business;
import com.ocm.tourism.core.domain.CulinaryCulture;
import com.ocm.tourism.core.domain.Distance;
import com.ocm.tourism.core.domain.FoodStall;
import com.ocm.tourism.core.domain.Hotel;
import com.ocm.tourism.core.domain.MapInfo;
import com.ocm.tourism.core.domain.Room;
import com.ocm.tourism.core.domain.SaleOff;
import com.ocm.tourism.core.model.SearchCriteria;

public interface BusinessService {

   List<Business> findBusinesses(SearchCriteria searchCriteria, int firstResult, int maxResults);

   List<Business> findHotelViewest(int firstResult, int maxResults);

   long countHotelViewest();
   
   void deleteBusiness(Business business);

   Business findBusiness(Long id);

   void saveBusiness(Business business);

   Hotel findhotel(Long id);

   List<Hotel> findHotels();

   List<Hotel> findSaleOffHotels(int firstResult, int maxResults);

   long countSaleOffHotels();

   List<Hotel> findHotelAdvs(int firstResult, int maxResults);

   long countHotelAdvs();

   List<Hotel> findHotels(String name, String address, String mobile, String homephone);

   List<Hotel> findHotels(SearchCriteria searchCriteria, int firstResult, int maxResults);

   long countHotels();

   List<Hotel> findHotels(int firstResult, int maxResults);

   long countRooms(long hotelId);

   Room findRoom(Long id);

   List<Room> findRooms(long hotel, int firstResult, int maxResults);

   List<Room> findRooms(long hotel);

   Advertisement findAdvertisement(Long id);

   long countSaleOffs(long hotelId);

   SaleOff findSaleOff(Long id);

   List<SaleOff> findSaleOffs(long hotel, int firstResult, int maxResults);

   List<Distance> findDistances(long hotel);

   List<Distance> findDistancesByCalinary(long id);
   
   MapInfo findMap(long hotel);

   CulinaryCulture findCulinary(long id);

   List<CulinaryCulture> findRestaurants(int firstResult, int maxResults);

   List<CulinaryCulture> findRestaurantAdvs(int firstResult, int maxResults);

   long countRestaurants();

   List<CulinaryCulture> findCoffees(int firstResult, int maxResults);

   List<CulinaryCulture> findCoffeeAdvs(int firstResult, int maxResults);
   
   List<CulinaryCulture> findCulinaryCultures(String name, String address, String mobile, String homephone);

   long countCoffees();

   FoodStall findFoodStall(long id);

   List<FoodStall> findFoodStalls(int firstResult, int maxResults);

   List<FoodStall> findFoodStallAdvs(int firstResult, int maxResults);
   
   List<FoodStall> findFoodStallAdvs(int firstResult, int maxResults, int periodTime);

   long countFoodStalls();

   long countFoodStallAdvs(int periodTime);

   long countFoodStallAdvs();

}
